SetSpecificProperties Subroutine

private subroutine SetSpecificProperties(method, ini, mask)

set properties and initialize variables for each interpolation method

Arguments

Type IntentOptional Attributes Name
integer(kind=short), intent(in) :: method
type(IniList), intent(in) :: ini
type(grid_integer), intent(in) :: mask

Source Code

SUBROUTINE SetSpecificProperties &
!
( method, ini, mask )

IMPLICIT NONE

!Arguments with intent(in):
INTEGER (KIND = short), INTENT(in) :: method
TYPE (IniList)        , INTENT(in) :: ini
TYPE (grid_integer)   , INTENT(in) :: mask

!----------------------------end of declarations-------------------------------

!set data specific for each interpolation method
	SELECT CASE (method)
    CASE (1) !thiessen
      CALL NewGrid (interpolatedMap (1), mask, 0.)
    CASE (2) !inverse distance
      CALL NewGrid (interpolatedMap (2), mask, 0.)
	    !nearest-points
      IF (KeyIsPresent ('nearest-points', ini, &
                         section = 'precipitation-daily') ) THEN
	       neighbors = IniReadInt ('nearest-points', ini, &
                                   section = 'precipitation-daily')
      ELSE !nearest-points missing
          CALL Catch ('error', 'PrecipitationDaily',   &
		                 'nearest-points missing in meteo configuration file')
      END IF
 
    CASE (3) !kriging
      CALL NewGrid (interpolatedMap (3), mask, 0.)
      !nearest-points
      IF (KeyIsPresent ('nearest-points', ini, &
                         section = 'precipitation-daily') ) THEN
	       neighbors = IniReadInt ('nearest-points', ini, &
                                   section = 'precipitation-daily')
           CALL Catch ('info', 'PrecipitationDaily', 'neighbors set to: ', argument = ToString (neighbors) )
      ELSE !nearest-points missing
          CALL Catch ('error', 'PrecipitationDaily',   &
		                 'nearest-points missing in meteo configuration file')
      END IF
      
      !kriging-variance
      IF (KeyIsPresent ('kriging-variance', ini, &
                         section = 'precipitation-daily') ) THEN
	       krige_var = IniReadInt ('kriging-variance', ini, &
                                   section = 'precipitation-daily')
           
           CALL Catch ('info', 'PrecipitationDaily',   &
		                 'kriging variance export set to ', argument = ToString(krige_var) )
      ELSE !kriging-variance missing
           krige_var = 0                                     
           CALL Catch ('info', 'PrecipitationDaily',   &
		                 'kriging variance export set to default (0)')
      END IF
      
      !kriging-anisotropy
      IF (KeyIsPresent ('kriging-anisotropy', ini, &
                         section = 'precipitation-daily') ) THEN
	       krige_anisotropy = IniReadInt ('kriging-anisotropy', ini, &
                                   section = 'precipitation-daily')
           CALL Catch ('info', 'PrecipitationDaily', 'kriging anisotropy set to: ', argument = ToString (krige_anisotropy) )
      ELSE !kriging-anisotropy missing
           krige_anisotropy = 0                                     
           CALL Catch ('info', 'PrecipitationDaily',   &
		                 'kriging anisotropy set to default (0)')
      END IF
      
      !kriging-variogram-model
      IF (KeyIsPresent ('kriging-variogram-model', ini, &
                         section = 'precipitation-daily') ) THEN
	       krige_varmodel = IniReadInt ('kriging-variogram-model', ini, &
                                   section = 'precipitation-daily')
           CALL Catch ('info', 'PrecipitationDaily', 'kriging variogram model set to: ', argument = ToString (krige_varmodel) )
           IF (krige_varmodel == 0 ) krige_varmodel = 5 !automatic fitting
      ELSE !kriging-variogram-model
           krige_varmodel = 2                                     
           CALL Catch ('info', 'PrecipitationDaily',   &
		                 'kriging variogram model set to default (2 exponential)')
      END IF
      
      !kriging-lags
      IF (KeyIsPresent ('kriging-lags', ini, &
                         section = 'precipitation-daily') ) THEN
	       krige_lags = IniReadInt ('kriging-lags', ini, &
                                   section = 'precipitation-daily')
           IF (krige_lags == 0) krige_lags = 15
           CALL Catch ('info', 'PrecipitationDaily', 'kriging lags set to: ', argument = ToString (krige_lags) )
      ELSE !kriging-variogram-model
           krige_lags = 15                                     
           CALL Catch ('info', 'PrecipitationDaily',   &
		                 'kriging lags set to default (15)')
      END IF
      
       !kriging-maxlag
      IF (KeyIsPresent ('kriging-maxlag', ini, &
                         section = 'precipitation-daily') ) THEN
	       krige_maxlag = IniReadInt ('kriging-maxlag', ini, &
                                   section = 'precipitation-daily')
           CALL Catch ('info', 'PrecipitationDaily', 'kriging max lag set to: ', argument = ToString (krige_maxlag) )
      ELSE !kriging-maxlag missing
           krige_maxlag = 0
          CALL Catch ('error', 'PrecipitationDaily',   &
		                 'kriging max lag set to default (0)')
      END IF
	
	END SELECT


RETURN
END SUBROUTINE SetSpecificProperties